package com.my.leetCode;

import java.util.HashMap;

/**
 * @author Lelezhang
 * @create 2021-07-19 21:47
 */
public class LeetCode35 {
    /**
     * 给定一个排序数组和一个目标值，在数组中找到目标值，并返回其索引。如果目标值不存在于数组中，返回它将会被按顺序插入的位置。
     * <p>
     * 请必须使用时间复杂度为 O(log n) 的算法。
     * <p>
     * <p>
     * <p>
     * 示例 1:
     * <p>
     * 输入: nums = [1,3,5,6], target = 5
     * 输出: 2
     * 示例 2:
     * <p>
     * 输入: nums = [1,3,5,6], target = 2
     * 输出: 1
     * 示例 3:
     * <p>
     * 输入: nums = [1,3,5,6], target = 7
     * 输出: 4
     * <p>
     * <p>
     * 提示:
     * <p>
     * 1 <= nums.length <= 104
     * -104 <= nums[i] <= 104
     * nums 为 无重复元素 的 升序 排列数组
     * -104 <= target <= 104
     */
    public static void main(String[] args) {
        String[] strs = new String[]{"a"};
//        System.out.println(groupAnagrams(strs));
    }


    // todo 不是最优解，最优解是2分法
    public int searchInsert(int[] nums, int target) {
        HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
        for (int i = 0; i < nums.length; i++) {
            map.put(nums[i], i);
        }
        if (map.containsKey(target)) {
            return map.get(target);
        }

        if (target < nums[0]) {
            return 0;
        } else if (target > nums[nums.length - 1]) {
            return nums.length - 1;
        } else {
            for (int i = 0; i < nums.length - 1; i++) {
                if (target < nums[i] && target > nums[i + 1]) {
                    return i + 1;
                }
            }
            return -1;
        }
    }
}
